/*
 * LexicalHandler.hpp
 *
 *  Created on: Dec 10, 2013
 *      Author: paste
 */

#ifndef LEXICALHANDLER_HPP_
#define LEXICALHANDLER_HPP_

namespace saxpp
{
  template<class CH = char, class TRAITS = std::char_traits<CH> >
    class LexicalHandler
    {
      typename CH char_type;
      typename TRAITS char_traits;
      typename std::basic_string<char_type, char_traits> string_type;

      virtual
      ~LexicalHandler()
      {
      }

      virtual void
      comment(char_type */*ch*/, const int &/*start*/,
          const int &/*length*/) = 0;

      virtual void
      endCDATA() = 0;

      virtual void
      endDTD() = 0;

      virtual void
      endEntity(const string_type &/*name*/) = 0;

      virtual void
      startCDATA() = 0;

      virtual void
      startDTD(const string_type &/*name*/, const string_type &/*publicId*/,
          const string_type &/*systemId*/) = 0;

      virtual void
      startEntity(const string_type &/*name*/) = 0;
    };
}

#endif /* LEXICALHANDLER_HPP_ */
